package com.ufaud.ais.sys.service;

import java.util.List;

import com.ufaud.ais.pub.exception.BusinessException;
import com.ufaud.ais.pub.service.IGenericCRUDService;
import com.ufaud.ais.sys.entity.CustomItem;
import com.ufaud.ais.sys.entity.CustomItemType;

public interface ICustomItemService extends IGenericCRUDService<CustomItem, Long> {

	/**
	 * 功能: 根据id取得自定义项分类
	 * @author 林可  2010-7-21 下午05:13:49
	 * @param id
	 * @return
	 */
	CustomItemType getTypeById(Long id);

	/**
	 * 功能: 根据name取得自定义项分类
	 * @author 林可  2010-7-21 下午05:13:56
	 * @param name
	 * @return
	 */
	CustomItemType getTypeByName(String name);

	/**
	 * 功能: 取得所有自定义项分类
	 * @author 林可  2010-7-21 下午05:14:45
	 * @return
	 */
	List<CustomItemType> getAllType();

	/**
	 * 功能: 根据TypeId取得自定义分类项
	 * @author 林可  2010-7-21 下午11:50:34
	 * @return
	 */
	List<CustomItem> getItemListByTypeId(Long typeId);

	/**
	 * 功能: 根据TypeName取得自定义分类项
	 * @author 林可  2010-7-21 下午11:50:56
	 * @return
	 */
	List<CustomItem> getItemListByTypeName(String typeName);

	/**
	 * 功能: 插入新的自定义项类型
	 * @author 林可  2010-7-22 下午02:27:30
	 * @param customItemType
	 */
	void insertType(CustomItemType customItemType);
	
	/**
	 * 功能: 更新某个自定义项类型
	 * @author 林可  2010-7-22 下午02:27:30
	 * @param customItemType
	 */
	void updateType(CustomItemType customItemType);

	/**
	 * 功能:
	 * @author 林可  2010-7-22 下午02:32:49
	 * @param typeId
	 * @throws BusinessException 当该类型下有未删除项时，不允许删除
	 */
	void deleteTypeById(Long typeId) throws BusinessException;

	/**
	 * 功能:
	 * @author 林可  2010-7-22 下午03:16:13
	 * @param itemId
	 * @throws BusinessException 当该项已被系统其它部门引用时，不允许删除
	 */
	void deleteItemById(Long itemId) throws BusinessException;

	/**
	 * 功能: 更新某个自定义项
	 * @author 林可  2010-7-22 下午03:37:55
	 * @param customItem
	 */
	void updateItem(CustomItem customItem);
}
